1. Field
The present disclosure relates to computer systems and methods in which data resources are shared among data consumers while preserving data integrity and consistency relative to each consumer. More particularly, the invention concerns the use of hardware transactional memory in conjunction with certain types of readers that can tolerate stale data, such as readers whose memory loads are protected by read-copy update or hazard pointers.
2. Description of the Prior Art
By way of background, hardware transactional memory (HTM), read-copy update (RCU), and hazard pointers all provide techniques for concurrent programming, each with various advantages and disadvantages. Although HTM data updates can be performed in conjunction with RCU and hazard pointer data read operations, current HTM implementations result in RCU/hazard-pointer readers needlessly aborting concurrent conflicting updates. Applicant submits that a more efficient approach would be for the RCU/hazard-pointer reader loads to return pre-transactional data, so as to allow the updaters to make forward progress despite concurrent conflicting readers. However, this approach is problematic due to current hardware cache-coherence schemes. HTM relies on invalidating other CPU's copies of variables that it updates, and handing out copies of old values of those variables would defeat HTM. For example, another transaction on one of the other CPUs might incorrectly use the old value of one of the variables, thereby defeating inter-transaction atomicity. There is thus a need for an improved technique that permits HTM to operate correctly, and also to interoperate efficiently with concurrent conflicting readers that rely on RCU, hazard-pointer readers, or possibly other lockless synchronization techniques.